package com.dmbjz.aot;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;


/**
 * 打包成本地镜像:
 *
 * 1、打成 jar包: 注意修改 jar包内的 MANIFEST.MF 文件，指定Main-class的全类名
 *              - java -jar xxx.jar 就可以执行。
 *              - 切换机器，安装java环境。默认解释执行，启动速度慢，运行速度慢
 * 2、打成本地镜像(非Springboot可执):
 *              命令： native-image -cp 你的jar包/路径 你的主类 -o 输出的文件名
 *              案例： native-image -cp xxx.jar com.atguigu.MainApplication -o Demo
 *
 * 并不是所有的Java代码都能支持本地打包，Spingboot 保证 Spring 应用的所有程序都能在 AOT 的时候提前告知 Graalvm 如何处理
 *      - 动态能力损失：反射的代码 > 动态获取构造器，反射创建对象，反射调用一些方法
 *        解决方案：额外处理(SpringBoot提供了一些注解):提前告知 graalvm 反射会用到哪些方法、构造器
 *      - 配置文件损失:
 *        解决方案：额外处理(配置中心):提前告知 graalvm 配置文件怎么处理
 * 二进制里面不能包含的，不能动态的都得提前处理
 */
@SpringBootApplication
public class AotDemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(AotDemoApplication.class, args);
    }

}
